package com.yonyougov.devops.cruxcisupport.rancher;

import com.yonyougov.devops.cruxcisupport.rancher.namespace.RhNameSpace;
import com.yonyougov.devops.cruxcisupport.rancher.vo.CreatePodRequestVo;
import com.yonyougov.devops.cruxcisupport.rancher.vo.RhDeployment;
import com.yonyougov.devops.cruxcisupport.rancher.vo.RhProject;

public interface RancherDao {
    /**
     * 获取当前集群的唯一标识
     *
     * @param envName
     * @return
     */
    RhProject getProject(String envName);

    /**
     * 获取运行中的pod
     *
     * @param id
     * @param appName
     * @return
     */
    RhDeployment getDeployment(String id, String appName);

    /**
     * 创建Pod
     *
     * @param id
     * @param createPodRequestVo
     */
    boolean createPod(String id, CreatePodRequestVo createPodRequestVo);

    /**
     * 删除Pod
     *
     * @param nameSpace
     * @param appName
     * @param id
     */
    void deletePod(String nameSpace, String appName, String id);

    /**
     * 创建service
     *
     * @param id
     * @param createPodRequestVo
     * @param rhNameSpace
     */
    void createPodService(String id, CreatePodRequestVo createPodRequestVo, RhNameSpace rhNameSpace);

    /**
     * 删除服务
     *
     * @param id
     * @param nameSpace
     * @param serviceName
     */
    void deleteService(String id, String nameSpace, String serviceName);

    /**
     * 获取集群下某个命令空间的信息
     *
     * @param clusterId
     * @param nameSpace
     * @return
     */
    RhNameSpace getRhNameSpace(String clusterId, String nameSpace);

    /**
     * 创建集群
     *
     * @param clusterName
     * @param portRange
     * @return
     */
    boolean createCluster(String clusterName, String portRange);

    /**
     * 获取环境的添加节点的命令
     *
     * @param envName
     * @param roles
     * @return
     */
    String getCmdToAddNodes(String envName, String roles);
}
